

#ifndef __DC_MOTOR__H__

  #define  __DC_MOTOR__H__


typedef unsigned char uint8_t;

#define _BV(bit) (1 << (bit))

/////////////////////////////
/*
wiringPi Pin Definition:
MOTORLATCH 0 // pin P1-11    // RCLK
MOTORCLK 1 // pin P1-12     // SCLK
MOTORENABLE 2 // pin P1-13   // ^OE
MOTORDATA 3 // pin P1-15    //SER
MOTOR_1_PWM 4 // pin P1-16
MOTOR_2_PWM 5 // pin P1-18
MOTOR_3_PWM ? // pin P1-??
MOTOR_4_PWM ? // pin P1-??
*/

#define MOTORLATCH  0  // RCLK
#define MOTORCLK    1  // SCLK
#define MOTORENABLE 2  // ^OE
#define MOTORDATA   3   //SER
#define MOTOR_1_PWM 4
#define MOTOR_2_PWM 5
#define MOTOR_3_PWM 6  //
#define MOTOR_4_PWM 7  //

#define FREQ_MAX   100


///////////////////////////////
#define MOTOR1_A 2
#define MOTOR1_B 3
#define MOTOR2_A 1
#define MOTOR2_B 4
#define MOTOR4_A 0
#define MOTOR4_B 6
#define MOTOR3_A 5
#define MOTOR3_B 7

#define FORWARD  1
#define BACKWARD 2
#define BRAKE    3
#define RELEASE  4

#define RANGE      100
#define DC_MOTORS  4


typedef struct _motorInf_t{
   uint8_t pwmfreq;
   
   
} motorInf_t;



void DCMotorInit();
void DCMotorRun(uint8_t motornum, uint8_t cmd);
void DCMotorSetSpeed(uint8_t motornum, int speed);
void latch_tx(void);
void setPWM(uint8_t num, int freq);
void initPWM(uint8_t num, int freq);
void enable(void);

#endif